import axios from 'axios'
import qs from 'qs'
import { getToken } from '@u/index'
import { showToast  } from 'vant';
import router from '@/router'
// 定义默认配置
axios.defaults.baseURL = import.meta.env.VITE_BASE_URL
axios.defaults.timeout = 8000

// 添加 拦截器
axios.interceptors.request.use(function (config:any) {
  
  // 请求头添加token 实际开发一般都是请求头中添加
 /*  if (getToken()) {
    config.headers.token = getToken()
  } */
  // 我们接口是在请求体添加token
  if (config.method === 'get') {
    config.params = {
      ...config.params,
      token: getToken()
    }
  }
  if (config.method === 'post') {
    config.data = {
      ...config.data,
      token: getToken()
    }
  }
  if (config.method === 'post' && config.data) {
    config.data = qs.stringify(config.data)
  }
  return config;
}, function (error) {
  return Promise.reject(error);
});

axios.interceptors.response.use(function (res:any) {
  // 判断code 我们接口 code 2000 token过期或者没有传token
  // 弹出错误提示，清除登录相关缓存 去登录页
  if (res.data.code === 2000) {
    showToast({
      type: 'fail',
      message: '用户未登录，请登录',
      onClose: () => {
        // 清除登录缓存
        localStorage.removeItem('uid');
        localStorage.removeItem('token');
        // 去登录页
        router.push('/login')
      }
    })
  }
  return res;
}, function (error) {
  return Promise.reject(error);
});

export default axios